export interface ComponentProp {
    name: string
    type: string
    required: boolean
    defaultValue?: string
    description?: string
}

export interface ComponentFeature {
    id: string
    name: string
    enabled: boolean
}

export interface ComponentConfig {
    name: string
    type: string
    description: string
    props: ComponentProp[]
    features: ComponentFeature[]
    context?: ProjectStructure
}

export interface TailwindConfig {
    primaryColor: string
    secondaryColor: string
    fontFamily: string
    borderRadius: string
    customConfig: string
}

export interface Step {
    step_id: number
    step_name: string
    step_description: string
    status?: "pending" | "in-progress" | "completed" | "skipped"
    notes?: string
}

export interface JsonPlan {
    user_requirements: string
    user_requirements_brief: string
    steps: Step[]
    number_of_steps: number
}

export interface AiModel {
    id: string
    name: string
    provider: string
    description: string
}

export interface TodoItem {
    id: number
    title: string
    description: string
    priority: "high" | "medium" | "low"
    status: "todo" | "in-progress" | "done"
    selected: boolean
    generatedCode?: string
}

export interface ProjectConfig {
    name: string
    description: string
    dockerRepo?: string
    dockerUsername?: string
    dockerPassword?: string
    vueVersion: string
    includeRouter: boolean
    includePinia: boolean
    includeVitest: boolean
    includeEslint: boolean
}

export interface FileEntry {
    path: string
    content: string
    type: "file" | "directory"
}

export interface ProjectStructure {
    files: FileEntry[]
    rootDir: string
}
